package com.mercury.base.util;


import com.mercury.base.enums.base.IEnum;

import java.util.Objects;

/**
 * 枚举工具类。
 *
 * @author mercury
 * @date 2021/2/5 11:20
 */
public class EnumUtil {

    /**
     * 通过Code返回枚举。
     *
     * @param code      枚举code。
     * @param enumClass 想要获得枚举类.Class。
     * @return 根据code得出枚举类中具体枚举。
     */
    public static <T extends IEnum> T getByCode(Integer code, Class<T> enumClass) {
        if (Objects.isNull(code) || Objects.isNull(enumClass)) {
            return null;
        }
        //通过反射取出Enum所有常量的属性值。
        for (T each : enumClass.getEnumConstants()) {
            //利用code进行循环比较，获取对应的枚举。
            if (code.equals(each.getCode())) {
                return each;
            }
        }
        return null;
    }

}
